Oracle RAC 12C 12.2.0.1 OEL7.9 最佳实践

操作系统准备

1. 操作系统优化

  1. 创建oracle ,grid 用户
bash optimize_system_conf_oracle.sh

2. 设置hosts

cat >> /etc/hosts << EOF

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1  localhost 
#public ip
192.168.10.211 rac1
192.168.10.212 rac2
#vip
192.168.10.210 rac1-vip
192.168.10.209 rac2-vip
#private ip
192.168.122.21 rac1-priv
192.168.122.22 rac2-priv
#scanip
192.168.10.208 scan-ip
EOF

3. 建立 ORACLE_HOME 和 GRID_HOME

mkdir -p /u01/app/grid/product/12.2.0/grid
mkdir -p /u01/app/oracle/product/12.2.0/db_1
mkdir -p /u01/app/grid
chown -R oracle:dba /u01/app/oracle
chown -R grid:dba /u01/app/grid
chmod -R 775 /u01/app/oracle
chmod -R 775 /u01/app/grid

4. 安装依赖包

4.1. Linux 系统依赖包

yum install oracle-database-server-12cR2-preinstall -y
yum install chrony  -y
yum install ntp -y
Note

其他版本linux:
yum install bind-libs bind-utils compat-libcap1 compat-libstdc++-33 gssproxy keyutils ksh
libICE libSM libX11 libX11-common libXau libXext libXi libXinerama libXmu
libXrandr libXrender libXt libXtst libXv libXxf86dga libXxf86misc libXxf86vm
libaio-devel libbasicobjects libcollection libdmx libevent libini_config
libnfsidmap libpath_utils libref_array libstdc++-devel libtirpc libverto-libevent
libxcb lm_sensors-libs mailx nfs-utils psmisc quota quota-nls rpcbind
smartmontools sysstat tcp_wrappers unzip xorg-x11-utils xorg-x11-xauth -y

4.2. 安装oracleasm工具包

yum install oracleasm* -y

5. 设置Oracle环境变量

Note

5.1. rac1

su - oracle
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=citdb1
export ORACLE_UNQNAME=citdb1
export PATH=\$ORACLE_HOME/bin:\$PATH
export LANG=C
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export DISPLAY=192.168.10.122:0.0
export CVUQDISK_GRP=dba
EOF

5.2. rac2

su - oracle
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=citdb2
export ORACLE_UNQNAME=citdb2
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export DISPLAY=192.168.10.122:0.0
export CVUQDISK_GRP=dba
export LANG=C
EOF

6. 设置GRID 环境变量

6.1. rac1

su - grid
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/grid/base
export ORACLE_HOME=/u01/app/grid/product/12.2.0/grid
export ORACLE_SID=+ASM1
export PATH=\$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export DISPLAY=192.168.10.102:0.0
export CVUQDISK_GRP=dba
export LANG=C
EOF

6.2. rac2

su - grid
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/grid/base
export ORACLE_HOME=/u01/app/grid/product/12.2.0/grid
export ORACLE_SID=+ASM2
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export DISPLAY=192.168.10.122:0.0
export CVUQDISK_GRP=dba
export LANG=C
EOF

7. ROOT 的环境变量

cat >> ~/.bash_profile << EOF
export PATH=/u01/app/grid/product/12.2.0/grid/bin:\$PATH
export LANG=C
EOF

8. 创建ASM 磁盘

8.1. 初始化oracleasm 组件

oracleasm  init
oracleasm configure -i
grid
dba
y
y

8.2. 磁盘分区

for i in {b..m}; 
do  fdisk /dev/sd$i << eof
n
p
1



w
eof
done

8.3. 创建ASM 磁盘

8.3.1. 创建OCR 磁盘

count=1; 
for i in {b..d};
do  oracleasm createdisk OCR$count /dev/sd$i'1';
let count+=1;
done

8.3.2. 创建DATA 磁盘

count=1; 
for i in {e..g};
do  oracleasm createdisk DATA$count /dev/sd$i'1';
let count+=1;
done

8.3.3. 创建快速恢复目录

count=1;
for i in {h..j};
do  oracleasm createdisk FRA$count /dev/sd$i'1'; 
let count+=1;
done

8.3.4. MGT

count=1;
for i in {k..m};
do  oracleasm createdisk MGT$count /dev/sd$i'1'; 
let count+=1;
done

8.3.5. 检查磁盘是否创建成功

oracleasm listdisks
Warning

磁盘路径为:
/dev/oracleasm/disks

8.4. 另一个节点

oracleasm  scandisks

9.   调整/dev/shm

9.1. 增大tmpfs 文件系统大小

cat >> /etc/fstab << EOF
tmpfs                   /dev/shm                tmpfs   defaults,size=8192M        0 0
EOF

9.2. 重新挂载

mount -o remount /dev/shm

10. NTP 服务

10.1. NTP 服务端

  1. 修改/etc/chrony.conf
server 192.168.10.211 prefer
allow 192.168.10.0/24
  1. 重启服务
systemctl  start chronyd
systemctl  status chronyd
systemctl enable chronyd

10.2. NTP 客户端

  1. 修改/etc/chrony.conf
server 192.168.10.211 iburst
  1. 重启服务
systemctl  start chronyd
systemctl  status chronyd

10.3. 验证时间同步.

chronyc sources
chronyc sourcestats

11. 准备安装介质

11.1. 更改磁盘权限

cd /app
mkdir setup
mkdir db
mkdir grid
chown -R grid:dba grid/
chown -R oracle:dba db/

11.2. 解压软件

unzip <version>.zip -d  $ORACLE_HOME
unzip <version>.zip -d  $GI_HOME

启动grid 安装

export DISPLAY=192.168.10.122:0.0

启动asmca 创建ASM 磁盘组。

!Oracle RAC 创建ASM 磁盘.png

启动数据库安装

export DISPLAY=192.168.10.122:0.0

FAQ

1. 互信问题

Warning

报错信息:passwordless ssh connectivity is not setup from the local node node1 to the following nodes node2

1.1. 解决方案

1)Rename the original scp.

mv /usr/bin/scp /usr/bin/scp.orig

2)Create a new file .

vi /usr/bin/scp

3)Add the below line to the new created file .

/usr/bin/scp.orig -T $*

4)Change the file permission.

chmod 555 /usr/bin/scp

After installation:

mv /usr/bin/scp.orig /usr/bin/scp

1.2. 删除磁盘组

count=1;
for i in {b..m};
do  oracleasm deletedisk FRA$count;
let count+=1;
done
count=1;
for i in {b..m};
do  oracleasm deletedisk DATA$count;
let count+=1;
done
count=1;
for i in {b..m};
do oracleasm deletedisk OCR$count;
let count+=1;
done
for i in {b..m};
do  oracleasm deletedisk MGT$count;
let count+=1;
done

1.3. 删除磁盘分区

for i in {b..m}; 
do  fdisk /dev/sd$i << eof
d
w
eof
done